﻿using Newtonsoft.Json;
using System;
using System.Collections.Generic;

namespace facebook.businuss.netcore.sdk.Model
{
    public  class AdAccountInfo
    {
        [JsonProperty(PropertyName = "account_id")]
        public string mAccountId { get; set; }
        
        /// <summary>
        /// 1 = ACTIVE
        ///2 = DISABLED
        ///3 = UNSETTLED
        ///7 = PENDING_RISK_REVIEW
        ///8 = PENDING_SETTLEMENT
        ///9 = IN_GRACE_PERIOD
        ///100 = PENDING_CLOSURE
        ///101 = CLOSED
        ///201 = ANY_ACTIVE
        ///202 = ANY_CLOSED
        /// </summary>
        [JsonProperty(PropertyName = "account_status")]
        public long mAccountStatus{get; set;}
        [JsonProperty(PropertyName = "ad_account_promotable_objects")]
        public AdAccountPromotableObjects mAdAccountPromotableObjects{get; set;}
        [JsonProperty(PropertyName = "age")]
        public Double mAge{get; set;}
        [JsonProperty(PropertyName = "agency_client_declaration")]
        public AgencyClientDeclaration mAgencyClientDeclaration{get; set;}
        [JsonProperty(PropertyName = "amount_spent")]
        public String mAmountSpent{get; set;}
        [JsonProperty(PropertyName = "attribution_spec")]
        public List<AttributionSpec> mAttributionSpec{get; set;}
        [JsonProperty(PropertyName = "balance")]
        public String mBalance{get; set;}
        [JsonProperty(PropertyName = "business")]
        public Business mBusiness{get; set;}
        [JsonProperty(PropertyName = "business_city")]
        public String mBusinessCity{get; set;}
        [JsonProperty(PropertyName = "business_country_code")]
        public String mBusinessCountryCode{get; set;}
        [JsonProperty(PropertyName = "business_name")]
        public String mBusinessName{get; set;}
        [JsonProperty(PropertyName = "business_state")]
        public String mBusinessState{get; set;}
        [JsonProperty(PropertyName = "business_street")]
        public String mBusinessStreet{get; set;}
        [JsonProperty(PropertyName = "business_street2")]
        public String mBusinessStreet2{get; set;}
        [JsonProperty(PropertyName = "business_zip")]
        public String mBusinessZip{get; set;}
        [JsonProperty(PropertyName = "can_create_brand_lift_study")]
        public Boolean mCanCreateBrandLiftStudy{get; set;}
        [JsonProperty(PropertyName = "capabilities")]
        public List<String> mCapabilities{get; set;}
        [JsonProperty(PropertyName = "created_time")]
        public String mCreatedTime{get; set;}
        [JsonProperty(PropertyName = "currency")]
        public String mCurrency{get; set;}
        [JsonProperty(PropertyName = "disable_reason")]
        public long mDisableReason{get; set;}
        [JsonProperty(PropertyName = "end_advertiser")]
        public String mEndAdvertiser{get; set;}
        [JsonProperty(PropertyName = "end_advertiser_name")]
        public String mEndAdvertiserName{get; set;}
        [JsonProperty(PropertyName = "extended_credit_invoice_group")]
        public ExtendedCreditInvoiceGroup mExtendedCreditInvoiceGroup{get; set;}
        [JsonProperty(PropertyName = "failed_delivery_checks")]
        public List<DeliveryCheck> mFailedDeliveryChecks{get; set;}
        [JsonProperty(PropertyName = "fb_entity")]
        public long mFbEntity{get; set;}
        [JsonProperty(PropertyName = "funding_source")]
        public String mFundingSource{get; set;}
        [JsonProperty(PropertyName = "funding_source_details")]
        public FundingSourceDetails mFundingSourceDetails{get; set;}
        [JsonProperty(PropertyName = "has_migrated_permissions")]
        public Boolean mHasMigratedPermissions{get; set;}
        [JsonProperty(PropertyName = "has_page_authorized_adaccount")]
        public Boolean mHasPageAuthorizedAdaccount{get; set;}
        [JsonProperty(PropertyName = "id")]
        public String mId{get; set;}
        [JsonProperty(PropertyName = "io_number")]
        public String mIoNumber{get; set;}
        [JsonProperty(PropertyName = "is_attribution_spec_system_default")]
        public Boolean mIsAttributionSpecSystemDefault{get; set;}
        [JsonProperty(PropertyName = "is_direct_deals_enabled")]
        public Boolean mIsDirectDealsEnabled{get; set;}
        [JsonProperty(PropertyName = "is_in_3ds_authorization_enabled_market")]
        public Boolean mIsIn3dsAuthorizationEnabledMarket{get; set;}
        [JsonProperty(PropertyName = "is_in_middle_of_local_entity_migration")]
        public Boolean mIsInMiddleOfLocalEntityMigration{get; set;}
        [JsonProperty(PropertyName = "is_notifications_enabled")]
        public Boolean mIsNotificationsEnabled{get; set;}
        [JsonProperty(PropertyName = "is_personal")]
        public long mIsPersonal{get; set;}
        [JsonProperty(PropertyName = "is_prepay_account")]
        public Boolean mIsPrepayAccount{get; set;}
        [JsonProperty(PropertyName = "is_tax_id_required")]
        public Boolean mIsTaxIdRequired{get; set;}
        [JsonProperty(PropertyName = "line_numbers")]
        public List<long> mLineNumbers{get; set;}
        [JsonProperty(PropertyName = "media_agency")]
        public String mMediaAgency{get; set;}
        [JsonProperty(PropertyName = "min_campaign_group_spend_cap")]
        public String mMinCampaignGroupSpendCap{get; set;}
        [JsonProperty(PropertyName = "min_daily_budget")]
        public long mMinDailyBudget{get; set;}
        [JsonProperty(PropertyName = "name")]
        public String mName{get; set;}
        [JsonProperty(PropertyName = "offsite_pixels_tos_accepted")]
        public Boolean mOffsitePixelsTosAccepted{get; set;}
        [JsonProperty(PropertyName = "owner")]
        public String mOwner{get; set;}
        [JsonProperty(PropertyName = "partner")]
        public String mPartner{get; set;}
        [JsonProperty(PropertyName = "rf_spec")]
        public ReachFrequencySpec mRfSpec{get; set;}
        [JsonProperty(PropertyName = "show_checkout_experience")]
        public Boolean mShowCheckoutExperience{get; set;}
        [JsonProperty(PropertyName = "spend_cap")]
        public String mSpendCap{get; set;}
        [JsonProperty(PropertyName = "tax_id")]
        public String mTaxId{get; set;}
        [JsonProperty(PropertyName = "tax_id_status")]
        public long mTaxIdStatus{get; set;}
        [JsonProperty(PropertyName = "tax_id_type")]
        public String mTaxIdType{get; set;}
        [JsonProperty(PropertyName = "timezone_id")]
        public long mTimezoneId{get; set;}
        [JsonProperty(PropertyName = "timezone_name")]
        public String mTimezoneName{get; set;}
        [JsonProperty(PropertyName = "timezone_offset_hours_utc")]
        public Double mTimezoneOffsetHoursUtc{get; set;}
        [JsonProperty(PropertyName = "tos_accepted")]
        public Dictionary<String, long> mTosAccepted{get; set;}
        [JsonProperty(PropertyName = "user_tasks")]
        public List<String> mUserTasks{get; set;}
        [JsonProperty(PropertyName = "user_tos_accepted")]
        public Dictionary<string, long> mUserTosAccepted{get; set;}
    }
}
